home *** CD-ROM | disk | FTP | other *** search
/ Macwelt 2 / Macwelt DVD 2.cdr / System / Entwickler-Tools / macos9 / Javascript OSA 1.0.3 / JavaScript / JavaScript.rsrc / jsLB_128 < prev    next >
Encoding:
Text File  |  2002-03-11  |  7.3 KB  |  302 lines

  1. /*
  2.  *    File:        JavaScript Library.js
  3.  *    Author:        Mark Alldritt
  4.  *
  5.  *
  6.  *        Copyright © 1998-2001    All Rights Reserved
  7.  *        Late Night Software Ltd.
  8.  *        1571 Deep Cove Road
  9.  *        N. Vancouver, B.C. CANADA
  10.  *
  11.  *        Copying of this software in whole or in part is a violation of
  12.  *        applicable copyright laws.  The authors are not responsible for any
  13.  *        losses caused by the use of or failure of this software.
  14.  *
  15.  */
  16.  
  17.  
  18. Core.version = "1.0b10";
  19. Core.copyright = "Copyright 1998-2001 Late Night Software Ltd.";
  20. Core.URL = "http://www.latenightsw.com/freeware/JavaScriptOSA/index.html";
  21.  
  22.  
  23. if (Core.platform == "MacOS")
  24. {
  25.     //    MacOS platform specific definitions
  26.  
  27.     MacOS.desktopFolder = MacOS.findFolder("desk");
  28.     MacOS.temporaryItemsFolder = MacOS.findFolder("temp");
  29.  
  30.     MacOS.version = function ()            // return the MacOS version
  31.     {
  32.         function bcdToDecimal(value)
  33.         {
  34.             var result = 0;
  35.  
  36.             for (var i = 0; i < 8; i++)
  37.                 switch (i)
  38.                 {
  39.                 case 0:
  40.                     result += (value & 0x0000000f); break;
  41.                 case 1:
  42.                     result += ((value & 0x000000f0) >> 4) * 10; break;
  43.                 case 2:
  44.                     result += ((value & 0x00000f00) >> 8) * 100; break;
  45.                 case 3:
  46.                     result += ((value & 0x0000f000) >> 12) * 1000; break;
  47.                 case 4:
  48.                     result += ((value & 0x000f0000) >> 16) * 10000; break;
  49.                 case 5:
  50.                     result += ((value & 0x00f00000) >> 20) * 100000; break;
  51.                 case 6:
  52.                     result += ((value & 0x0f000000) >> 24) * 1000000; break;
  53.                 case 7:
  54.                     result += ((value & 0xf0000000) >> 28) * 10000000; break;
  55.                 }
  56.             
  57.             return result;
  58.         }
  59.  
  60.         var vers = MacOS.gestalt("sysv");
  61.         if (vers & 0x0000000f)
  62.             return bcdToDecimal((vers >> 8) & 0x000000ff) + 
  63.                     "." + 
  64.                     bcdToDecimal(vers & 0x000000f0) +
  65.                     "." +
  66.                     bcdToDecimal(vers & 0x0000000f);
  67.         else
  68.             return bcdToDecimal((vers >> 8) & 0x000000ff) + 
  69.                     "." + 
  70.                     bcdToDecimal(vers & 0x000000ff);
  71.     }
  72.  
  73.     MacOS.beep = function ()
  74.     {
  75.         MacOS.appSelf(false, false).sendAE("syso", "beep");
  76.     }
  77.     
  78.     MacOS.messageBox = function(message)
  79.     {
  80.         MacOS.appSelf(false).sendAE("syso", "dlog",
  81.                               {"ae_----":message,
  82.                                "ae_btns":["OK"],
  83.                                "ae_dflt":1,
  84.                                "ae_disp":1});
  85.     }
  86.     
  87.     MacOS.message = MacOS.messageBox;    // backwards compatibility with older versions of
  88.                                         // JavaScript Library.js
  89.  
  90.     MacOS.warningBox = function(message)
  91.     {
  92.         MacOS.appSelf(false).sendAE("syso", "dlog",
  93.                               {"ae_----":message,
  94.                                "ae_btns":["OK"],
  95.                                "ae_dflt":1,
  96.                                "ae_disp":2});
  97.     }
  98.  
  99.     MacOS.errorBox = function(message)
  100.     {
  101.         MacOS.appSelf(false).sendAE("syso", "dlog",
  102.                               {"ae_----":message,
  103.                                "ae_btns":["OK"],
  104.                                "ae_dflt":1,
  105.                                "ae_disp":0});
  106.     }
  107.  
  108.     MacOS.ask = function(question)
  109.     {
  110.         var r = MacOS.appSelf(false).sendAE("syso", "dlog",
  111.                                {"ae_----":question,
  112.                                "ae_btns":["Yes", "No"],
  113.                                "ae_dflt":1,
  114.                                "ae_disp":0});
  115.         return r["ae_bhit"] == "Yes";
  116.     }
  117.  
  118.     MacOS.pick = function(prompt, items)
  119.     {
  120.         return MacOS.appSelf(false).sendAE("gtqp", "chlt",
  121.                               {"ae_----":items,
  122.                                "ae_prmp":prompt})[0];
  123.     }
  124.  
  125.     //    Well known MacOS scriptable applications
  126.     
  127.     try
  128.     {
  129.         MacOS.finder = function() { return MacOS.appBySignature("MACS", true, true); }
  130.     }
  131.     catch (e) {}
  132.     try
  133.     {
  134.         MacOS.urlAccess = function() { return MacOS.appBySignature("uasc", true, true); }
  135.     }
  136.     catch (e) {}
  137.     try
  138.     {
  139.         MacOS.bbEdit = function() { return MacOS.appBySignature("R*ch", true, true); }
  140.     }
  141.     catch (e) {}
  142.     
  143.     //    Applications often don't define common AppleEvent/AppleScript data types.  So,
  144.     //    to help out, we provide the most frequently used ones here along with a function
  145.     //    for making others
  146.  
  147.     /* MacOS.AEDesc.build is broken under MacOS X
  148.     MacOS.types = {
  149.         makeType : function(theType) {
  150.             var theDesc = new MacOS.AEDesc();
  151.             theDesc.build("type(" + theType + ")");
  152.             return theDesc;
  153.         }};
  154.         
  155.     MacOS.types.string = MacOS.types.makeType("TEXT");
  156.     MacOS.types.integer = MacOS.types.makeType("long");
  157.     MacOS.types.shortInteger = MacOS.types.makeType("shor");
  158.     MacOS.types.fileSpec = MacOS.types.makeType("fss ");
  159.     MacOS.types.alias = MacOS.types.makeType("alis");
  160.     */
  161.  
  162.     //    Platform independant definitions
  163.  
  164.     Core.me = MacOS.pathToMe().toString();
  165.     Core.home = MacOS.desktopFolder.toString();
  166.     Core.temp = MacOS.temporaryItemsFolder.toString();
  167.     Core.platformVersion = MacOS.version();
  168.     Core.message = MacOS.messageBox;
  169.     Core.warning = MacOS.warningBox;
  170.     Core.error = MacOS.errorBox;
  171.     Core.pick = MacOS.pick;
  172. }
  173. else if (Core.platform == "MacOSX")
  174. {
  175.     //    MacOS X platform specific definitions
  176.  
  177.     MacOS.desktopFolder = MacOS.findFolder("desk");
  178.     MacOS.temporaryItemsFolder = MacOS.findFolder("temp");
  179.  
  180.     MacOS.version = function ()            // return the MacOS version
  181.     {
  182.         function bcdToDecimal(value)
  183.         {
  184.             var result = 0;
  185.  
  186.             for (var i = 0; i < 8; i++)
  187.                 switch (i)
  188.                 {
  189.                 case 0:
  190.                     result += (value & 0x0000000f); break;
  191.                 case 1:
  192.                     result += ((value & 0x000000f0) >> 4) * 10; break;
  193.                 case 2:
  194.                     result += ((value & 0x00000f00) >> 8) * 100; break;
  195.                 case 3:
  196.                     result += ((value & 0x0000f000) >> 12) * 1000; break;
  197.                 case 4:
  198.                     result += ((value & 0x000f0000) >> 16) * 10000; break;
  199.                 case 5:
  200.                     result += ((value & 0x00f00000) >> 20) * 100000; break;
  201.                 case 6:
  202.                     result += ((value & 0x0f000000) >> 24) * 1000000; break;
  203.                 case 7:
  204.                     result += ((value & 0xf0000000) >> 28) * 10000000; break;
  205.                 }
  206.             
  207.             return result;
  208.         }
  209.  
  210.         var vers = MacOS.gestalt("sysv");
  211.         if (vers & 0x0000000f)
  212.             return bcdToDecimal((vers >> 8) & 0x000000ff) + 
  213.                     "." + 
  214.                     bcdToDecimal(vers & 0x000000f0) +
  215.                     "." +
  216.                     bcdToDecimal(vers & 0x0000000f);
  217.         else
  218.             return bcdToDecimal((vers >> 8) & 0x000000ff) + 
  219.                     "." + 
  220.                     bcdToDecimal(vers & 0x000000ff);
  221.     }
  222.  
  223.     MacOS.beep = function ()
  224.     {
  225.         MacOS.appSelf(false, false).sendAE("syso", "beep");
  226.     }
  227.     
  228.     MacOS.messageBox = function(message)
  229.     {
  230.         MacOS.appSelf(false).sendAE("syso", "dlog",
  231.                               {"ae_----":message,
  232.                                "ae_btns":["OK"],
  233.                                "ae_dflt":1,
  234.                                "ae_disp":1});
  235.     }
  236.     
  237.     MacOS.message = MacOS.messageBox;    // backwards compatibility with older versions of
  238.                                         // JavaScript Library.js
  239.  
  240.     MacOS.warningBox = function(message)
  241.     {
  242.         MacOS.appSelf(false).sendAE("syso", "dlog",
  243.                               {"ae_----":message,
  244.                                "ae_btns":["OK"],
  245.                                "ae_dflt":1,
  246.                                "ae_disp":2});
  247.     }
  248.  
  249.     MacOS.errorBox = function(message)
  250.     {
  251.         MacOS.appSelf(false).sendAE("syso", "dlog",
  252.                               {"ae_----":message,
  253.                                "ae_btns":["OK"],
  254.                                "ae_dflt":1,
  255.                                "ae_disp":0});
  256.     }
  257.  
  258.     MacOS.ask = function(question)
  259.     {
  260.         var r = MacOS.appSelf(false).sendAE("syso", "dlog",
  261.                                {"ae_----":question,
  262.                                "ae_btns":["Yes", "No"],
  263.                                "ae_dflt":1,
  264.                                "ae_disp":0});
  265.         return r["ae_bhit"] == "Yes";
  266.     }
  267.  
  268.     MacOS.pick = function(prompt, items)
  269.     {
  270.         return MacOS.appSelf(false).sendAE("gtqp", "chlt",
  271.                               {"ae_----":items,
  272.                                "ae_prmp":prompt})[0];
  273.     }
  274.  
  275.     //    Well known MacOS X applications
  276.     
  277.     try
  278.     {
  279.         MacOS.finder = function() { return MacOS.appBySignature("MACS", true, true); }
  280.     }
  281.     catch (e) {}
  282.     
  283.     //    Platform independant definitions
  284.  
  285.     Core.me = MacOS.pathToMe().toString();
  286.     Core.home = MacOS.desktopFolder.toString();
  287.     Core.temp = MacOS.temporaryItemsFolder.toString();
  288.     Core.platformVersion = MacOS.version();
  289.     Core.message = MacOS.messageBox;
  290.     Core.warning = MacOS.warningBox;
  291.     Core.error = MacOS.errorBox;
  292.     Core.pick = MacOS.pick;
  293. }
  294. else if (Core.platform == "Windows")
  295. {
  296.     Core.me = "";
  297.     Core.home = "";
  298.     Core.temp = "";
  299.     Core.platformVersion = "0.0";
  300.     Core.message = function(message) { };
  301. }
  302.